Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


nomadnet/vendor/additional_urwid_widgets/FormWidgets.py master (89e3eea1) Text, 19.16 KB

Tff7b72import T7ee787urwid

Tff7b72from T7ee787nomadnetT7ee787.T7ee787uiT7ee787.T7ee787textuiT7ee787.T7ee787ReadlineEdit Tff7b72import Te6edf3ReadlineMixinTb4b4b4, Te6edf3ReadlineEdit

Tff7b72class T56d364DialogLineBoxTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3bodyTb4b4b4, Te6edf3parentTff7b72=Tff7b72NoneTb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ff?Ta5d6ff"Tb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3bodyTb4b4b4, Te6edf3titleTff7b72=Te6edf3titleTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparent Tff7b72= Te6edf3parent

Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffescTa5d6ff"Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffparent Tff7b72and Tffa657hasattrTb4b4b4(Tff7b72selfTff7b72.Td2a8ffparentTb4b4b4, Ta5d6ff"Ta5d6ffdismiss_dialogTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffdismiss_dialogTb4b4b4(Tb4b4b4)
Tff7b72return Tff7b72None
Tff7b72return Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)

Tff7b72class T56d364PlaceholderTb4b4b4(Te6edf3ReadlineMixinTb4b4b4, Te6edf3urwidTff7b72.Td2a8ffEditTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3captionTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3edit_textTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3placeholderTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3captionTb4b4b4, Te6edf3edit_textTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffplaceholder Tff7b72= Te6edf3placeholder

Tff7b72def Td2a8ffrenderTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3focusTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffedit_text Tff7b72and Tff7b72not Te6edf3focusTb4b4b4:
Te6edf3placeholder_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffplaceholderTb4b4b4)Tb4b4b4)
Tff7b72return Te6edf3placeholder_widgetTff7b72.Td2a8ffrenderTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3focusTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72return Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffrenderTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3focusTb4b4b4)

Tff7b72class T56d364DropdownTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Te6edf3signals Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ffchangeTa5d6ff'Tb4b4b4] T8b949e# emit for urwid.connect_signal fn

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3labelTb4b4b4, Te6edf3optionsTb4b4b4, Te6edf3defaultTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fflabel Tff7b72= Te6edf3label
Tff7b72selfTff7b72.Td2a8ffoptions Tff7b72= Te6edf3options
Tff7b72selfTff7b72.Td2a8ffselected Tff7b72= Te6edf3default Tff7b72if Te6edf3default Tff7b72is Tff7b72not Tff7b72None Tff7b72else Te6edf3optionsTb4b4b4[T79c0ff0Tb4b4b4]

Tff7b72selfTff7b72.Td2a8ffmain_text Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTff7b72.Td2a8ffselectedTffd700}Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffmain_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffSelectableIconTb4b4b4(Tff7b72selfTff7b72.Td2a8ffmain_textTb4b4b4, T79c0ff0Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffmain_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Tff7b72selfTff7b72.Td2a8ffmain_buttonTb4b4b4, Ta5d6ff"Ta5d6ffbutton_normalTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffbutton_focusTa5d6ff"Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffoption_widgets Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3opt Tff7b72in Te6edf3optionsTb4b4b4:
Te6edf3icon Tff7b72= Te6edf3urwidTff7b72.Td2a8ffSelectableIconTb4b4b4(Te6edf3optTb4b4b4, T79c0ff0Tb4b4b4)
Te6edf3icon Tff7b72= Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3iconTb4b4b4, Ta5d6ff"Ta5d6fflist_normalTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fflist_focusTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffoption_widgetsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3iconTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffoptions_walker Tff7b72= Te6edf3urwidTff7b72.Td2a8ffSimpleFocusListWalkerTb4b4b4(Tff7b72selfTff7b72.Td2a8ffoption_widgetsTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffoptions_listbox Tff7b72= Te6edf3urwidTff7b72.Td2a8ffListBoxTb4b4b4(Tff7b72selfTff7b72.Td2a8ffoptions_walkerTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdropdown_box Tff7b72= Tff7b72None T8b949e# will be created on open_dropdown

Tff7b72selfTff7b72.Td2a8ffpile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[Tff7b72selfTff7b72.Td2a8ffmain_buttonTb4b4b4]Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdropdown_visible Tff7b72= Tff7b72False

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffpileTb4b4b4)

Tff7b72def Td2a8ffopen_dropdownTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffdropdown_visibleTb4b4b4:
Te6edf3height Tff7b72= Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffoptionsTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdropdown_box Tff7b72= Te6edf3urwidTff7b72.Td2a8ffBoxAdapterTb4b4b4(Tff7b72selfTff7b72.Td2a8ffoptions_listboxTb4b4b4, Te6edf3heightTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffpileTff7b72.Td2a8ffcontentsTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffdropdown_boxTb4b4b4, Tff7b72selfTff7b72.Td2a8ffpileTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdropdown_visible Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffpileTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff1
Tff7b72selfTff7b72.Td2a8ffoptions_walkerTff7b72.Td2a8ffset_focusTb4b4b4(T79c0ff0Tb4b4b4)

Tff7b72def Td2a8ffclose_dropdownTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffdropdown_visibleTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffpileTff7b72.Td2a8ffcontentsTff7b72.Td2a8ffpopTb4b4b4(Tb4b4b4) T8b949e# remove the dropdown_box
Tff7b72selfTff7b72.Td2a8ffdropdown_visible Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffpileTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff0
Tff7b72selfTff7b72.Td2a8ffdropdown_box Tff7b72= Tff7b72None

Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffdropdown_visibleTb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffenterTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffopen_dropdownTb4b4b4(Tb4b4b4)
Tff7b72return Tff7b72None
Tff7b72return Tff7b72selfTff7b72.Td2a8ffmain_buttonTff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffenterTa5d6ff"Tb4b4b4:
Te6edf3focus_result Tff7b72= Tff7b72selfTff7b72.Td2a8ffoptions_walkerTff7b72.Td2a8ffget_focusTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3focus_result Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3focus_widget Tff7b72= Te6edf3focus_resultTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3new_val Tff7b72= Te6edf3focus_widgetTff7b72.Td2a8ffbase_widgetTff7b72.Td2a8fftext
Te6edf3old_val Tff7b72= Tff7b72selfTff7b72.Td2a8ffselected
Tff7b72selfTff7b72.Td2a8ffselected Tff7b72= Te6edf3new_val
Tff7b72selfTff7b72.Td2a8ffmain_buttonTff7b72.Td2a8ffbase_widgetTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTff7b72.Td2a8ffselectedTffd700}Ta5d6ff"Tb4b4b4)

Tff7b72if Te6edf3old_val Tff7b72!= Te6edf3new_valTb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_emitTb4b4b4(Ta5d6ff'Ta5d6ffchangeTa5d6ff'Tb4b4b4, Te6edf3new_valTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffclose_dropdownTb4b4b4(Tb4b4b4)
Tff7b72return Tff7b72None
Tff7b72return Tff7b72selfTff7b72.Td2a8ffdropdown_boxTff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)

Tff7b72def Td2a8ffget_valueTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffselected

Tff7b72class T56d364ValidationErrorTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3messageTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4, Te6edf3messageTb4b4b4)Tb4b4b4)

Tff7b72class T56d364FormFieldTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3config_keyTb4b4b4, Te6edf3transformTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffconfig_key Tff7b72= Te6edf3config_key
Tff7b72selfTff7b72.Td2a8fftransform Tff7b72= Te6edf3transform Tff7b72or Tb4b4b4(Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTb4b4b4)

Tff7b72class T56d364FormEditTb4b4b4(Te6edf3PlaceholderTb4b4b4, Te6edf3FormFieldTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3config_keyTb4b4b4, Te6edf3captionTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3edit_textTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3placeholderTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3validation_typesTff7b72=Tff7b72NoneTb4b4b4, Te6edf3transformTff7b72=Tff7b72NoneTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Te6edf3PlaceholderTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3captionTb4b4b4, Te6edf3edit_textTb4b4b4, Te6edf3placeholderTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)
Te6edf3FormFieldTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3config_keyTb4b4b4, Te6edf3transformTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffvalidation_types Tff7b72= Te6edf3validation_types Tff7b72or Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8fferror_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Tff7b72None

Tff7b72def Td2a8ffget_valueTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8fftransformTb4b4b4(Tff7b72selfTff7b72.Td2a8ffedit_textTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffvalidateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3value Tff7b72= Tff7b72selfTff7b72.Td2a8ffedit_textTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Tff7b72None

Tff7b72for Te6edf3validation Tff7b72in Tff7b72selfTff7b72.Td2a8ffvalidation_typesTb4b4b4:
Tff7b72if Te6edf3validation Tff7b72== Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4:
Tff7b72if Tff7b72not Te6edf3valueTb4b4b4:
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Ta5d6ff"Ta5d6ffThis field is requiredTa5d6ff"
Tff7b72break
Tff7b72elif Te6edf3validation Tff7b72== Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4:
Tff7b72if Te6edf3value Tff7b72and Tff7b72not Te6edf3valueTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff'Ta5d6ff-Ta5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff'Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff'Ta5d6ff.Ta5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff'Tb4b4b4)Tff7b72.Td2a8ffisdigitTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Ta5d6ff"Ta5d6ffThis field must be a numberTa5d6ff"
Tff7b72break
Tff7b72elif Te6edf3validation Tff7b72== Ta5d6ff"Ta5d6fffloatTa5d6ff"Tb4b4b4:
Tff7b72tryTb4b4b4:
Tff7b72if Te6edf3valueTb4b4b4:
Tffa657floatTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72except Tf85149ValueErrorTb4b4b4:
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Ta5d6ff"Ta5d6ffThis field must be decimal numberTa5d6ff"
Tff7b72break

Tff7b72selfTff7b72.Td2a8fferror_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8fferror Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72return Tff7b72selfTff7b72.Td2a8fferror Tff7b72is Tff7b72None

Tff7b72class T56d364FormCheckboxTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffCheckBoxTb4b4b4, Te6edf3FormFieldTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3config_keyTb4b4b4, Te6edf3labelTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3stateTff7b72=Tff7b72FalseTb4b4b4, Te6edf3validation_typesTff7b72=Tff7b72NoneTb4b4b4, Te6edf3transformTff7b72=Tff7b72NoneTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Te6edf3urwidTff7b72.Td2a8ffCheckBoxTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3labelTb4b4b4, Te6edf3stateTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)
Te6edf3FormFieldTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3config_keyTb4b4b4, Te6edf3transformTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffvalidation_types Tff7b72= Te6edf3validation_types Tff7b72or Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8fferror_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Tff7b72None

Tff7b72def Td2a8ffget_valueTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8fftransformTb4b4b4(Tff7b72selfTff7b72.Td2a8ffget_stateTb4b4b4(Tb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffvalidateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:

Te6edf3value Tff7b72= Tff7b72selfTff7b72.Td2a8ffget_stateTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Tff7b72None

Tff7b72for Te6edf3validation Tff7b72in Tff7b72selfTff7b72.Td2a8ffvalidation_typesTb4b4b4:
Tff7b72if Te6edf3validation Tff7b72== Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4:
Tff7b72if Tff7b72not Te6edf3valueTb4b4b4:
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Ta5d6ff"Ta5d6ffThis field is requiredTa5d6ff"
Tff7b72break

Tff7b72selfTff7b72.Td2a8fferror_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8fferror Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72return Tff7b72selfTff7b72.Td2a8fferror Tff7b72is Tff7b72None

Tff7b72class T56d364FormDropdownTb4b4b4(Te6edf3DropdownTb4b4b4, Te6edf3FormFieldTb4b4b4)Tb4b4b4:
Te6edf3signals Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ffchangeTa5d6ff'Tb4b4b4]

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3config_keyTb4b4b4, Te6edf3labelTb4b4b4, Te6edf3optionsTb4b4b4, Te6edf3defaultTff7b72=Tff7b72NoneTb4b4b4, Te6edf3validation_typesTff7b72=Tff7b72NoneTb4b4b4, Te6edf3transformTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffoptions Tff7b72= Tb4b4b4[Tffa657strTb4b4b4(Te6edf3optTb4b4b4) Tff7b72for Te6edf3opt Tff7b72in Te6edf3optionsTb4b4b4]

Tff7b72if Te6edf3default Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3default_str Tff7b72= Tffa657strTb4b4b4(Te6edf3defaultTb4b4b4)
Tff7b72if Te6edf3default_str Tff7b72in Tff7b72selfTff7b72.Td2a8ffoptionsTb4b4b4:
Te6edf3default Tff7b72= Te6edf3default_str
Tff7b72elif Te6edf3transformTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3default_transformed Tff7b72= Te6edf3transformTb4b4b4(Te6edf3default_strTb4b4b4)
Tff7b72for Te6edf3opt Tff7b72in Tff7b72selfTff7b72.Td2a8ffoptionsTb4b4b4:
Tff7b72if Te6edf3transformTb4b4b4(Te6edf3optTb4b4b4) Tff7b72== Te6edf3default_transformedTb4b4b4:
Te6edf3default Tff7b72= Te6edf3opt
Tff7b72break
Tff7b72exceptTb4b4b4:
Te6edf3default Tff7b72= Tff7b72selfTff7b72.Td2a8ffoptionsTb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elseTb4b4b4:
Te6edf3default Tff7b72= Tff7b72selfTff7b72.Td2a8ffoptionsTb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elseTb4b4b4:
Te6edf3default Tff7b72= Tff7b72selfTff7b72.Td2a8ffoptionsTb4b4b4[T79c0ff0Tb4b4b4]

Te6edf3DropdownTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3labelTb4b4b4, Tff7b72selfTff7b72.Td2a8ffoptionsTb4b4b4, Te6edf3defaultTb4b4b4)
Te6edf3FormFieldTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3config_keyTb4b4b4, Te6edf3transformTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffvalidation_types Tff7b72= Te6edf3validation_types Tff7b72or Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8fferror_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Tff7b72None

Tff7b72if Tffa657hasattrTb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ffmain_buttonTa5d6ff'Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffmain_buttonTff7b72.Td2a8ffbase_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tffa657strTb4b4b4(Te6edf3defaultTb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffget_valueTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8fftransformTb4b4b4(Tff7b72selfTff7b72.Td2a8ffselectedTb4b4b4)

Tff7b72def Td2a8ffvalidateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3value Tff7b72= Tff7b72selfTff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Tff7b72None

Tff7b72for Te6edf3validation Tff7b72in Tff7b72selfTff7b72.Td2a8ffvalidation_typesTb4b4b4:
Tff7b72if Te6edf3validation Tff7b72== Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4:
Tff7b72if Tff7b72not Te6edf3valueTb4b4b4:
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Ta5d6ff"Ta5d6ffThis field is requiredTa5d6ff"
Tff7b72break

Tff7b72selfTff7b72.Td2a8fferror_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8fferror Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72return Tff7b72selfTff7b72.Td2a8fferror Tff7b72is Tff7b72None

Tff7b72def Td2a8ffopen_dropdownTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffdropdown_visibleTb4b4b4:
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffopen_dropdownTb4b4b4(Tb4b4b4)
Tff7b72tryTb4b4b4:
Te6edf3current_index Tff7b72= Tff7b72selfTff7b72.Td2a8ffoptionsTff7b72.Td2a8ffindexTb4b4b4(Tff7b72selfTff7b72.Td2a8ffselectedTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffoptions_walkerTff7b72.Td2a8ffset_focusTb4b4b4(Te6edf3current_indexTb4b4b4)
Tff7b72except Tf85149ValueErrorTb4b4b4:
Tff7b72pass

Tff7b72class T56d364FormMultiListTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4, Te6edf3FormFieldTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3config_keyTb4b4b4, Te6edf3placeholderTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3validation_typesTff7b72=Tff7b72NoneTb4b4b4, Te6edf3transformTff7b72=Tff7b72NoneTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentries Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8fferror_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffplaceholder Tff7b72= Te6edf3placeholder
Tff7b72selfTff7b72.Td2a8ffvalidation_types Tff7b72= Te6edf3validation_types Tff7b72or Tb4b4b4[Tb4b4b4]

Te6edf3first_entry Tff7b72= Tff7b72selfTff7b72.Td2a8ffcreate_entry_rowTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3first_entryTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffadd_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ff+ Add AnotherTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8ffadd_entryTb4b4b4)
Te6edf3add_button_padded Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Tff7b72selfTff7b72.Td2a8ffadd_buttonTb4b4b4, Te6edf3leftTff7b72=T79c0ff2Tb4b4b4, Te6edf3rightTff7b72=T79c0ff2Tb4b4b4)

Te6edf3pile_widgets Tff7b72= Tb4b4b4[Te6edf3first_entryTb4b4b4, Te6edf3add_button_paddedTb4b4b4]
Te6edf3urwidTff7b72.Td2a8ffPileTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3pile_widgetsTb4b4b4)
Te6edf3FormFieldTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3config_keyTb4b4b4, Te6edf3transformTb4b4b4)

Tff7b72def Td2a8ffcreate_entry_rowTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3edit Tff7b72= Te6edf3ReadlineEditTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)
Te6edf3entry_row Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff1Tb4b4b4, Te6edf3editTb4b4b4)Tb4b4b4,
Tb4b4b4(T79c0ff3Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ff×Ta5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72lambda Te6edf3buttonTb4b4b4: Tff7b72selfTff7b72.Td2a8ffremove_entryTb4b4b4(Te6edf3buttonTb4b4b4, Te6edf3entry_rowTb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)
Tff7b72return Te6edf3entry_row

Tff7b72def Td2a8ffremove_entryTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4, Te6edf3entry_rowTb4b4b4)Tb4b4b4:
Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffentriesTb4b4b4) Tff7b72> T79c0ff1Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffremoveTb4b4b4(Te6edf3entry_rowTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcontents Tff7b72= Tb4b4b4[Tb4b4b4(Te6edf3wTb4b4b4, Tff7b72selfTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72for Te6edf3w Tff7b72in Tff7b72selfTff7b72.Td2a8ffget_pile_widgetsTb4b4b4(Tb4b4b4)Tb4b4b4]

Tff7b72def Td2a8ffadd_entryTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Te6edf3new_entry Tff7b72= Tff7b72selfTff7b72.Td2a8ffcreate_entry_rowTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3new_entryTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffcontents Tff7b72= Tb4b4b4[Tb4b4b4(Te6edf3wTb4b4b4, Tff7b72selfTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72for Te6edf3w Tff7b72in Tff7b72selfTff7b72.Td2a8ffget_pile_widgetsTb4b4b4(Tb4b4b4)Tb4b4b4]

Tff7b72def Td2a8ffget_pile_widgetsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffentries Tff7b72+ Tb4b4b4[Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Tff7b72selfTff7b72.Td2a8ffadd_buttonTb4b4b4, Te6edf3leftTff7b72=T79c0ff2Tb4b4b4, Te6edf3rightTff7b72=T79c0ff2Tb4b4b4)Tb4b4b4]

Tff7b72def Td2a8ffget_valueTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3values Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3entry Tff7b72in Tff7b72selfTff7b72.Td2a8ffentriesTb4b4b4:
Te6edf3edit_widget Tff7b72= Te6edf3entryTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3value Tff7b72= Te6edf3edit_widgetTff7b72.Td2a8ffedit_textTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3valueTb4b4b4:
Te6edf3valuesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72return Tff7b72selfTff7b72.Td2a8fftransformTb4b4b4(Te6edf3valuesTb4b4b4)

Tff7b72def Td2a8ffvalidateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3values Tff7b72= Tff7b72selfTff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Tff7b72None

Tff7b72for Te6edf3validation Tff7b72in Tff7b72selfTff7b72.Td2a8ffvalidation_typesTb4b4b4:
Tff7b72if Te6edf3validation Tff7b72== Ta5d6ff"Ta5d6ffrequiredTa5d6ff" Tff7b72and Tff7b72not Te6edf3valuesTb4b4b4:
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Ta5d6ff"Ta5d6ffAt least one entry is requiredTa5d6ff"
Tff7b72break

Tff7b72selfTff7b72.Td2a8fferror_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8fferror Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72return Tff7b72selfTff7b72.Td2a8fferror Tff7b72is Tff7b72None


Tff7b72class T56d364FormMultiTableTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4, Te6edf3FormFieldTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3config_keyTb4b4b4, Te6edf3fieldsTb4b4b4, Te6edf3validation_typesTff7b72=Tff7b72NoneTb4b4b4, Te6edf3transformTff7b72=Tff7b72NoneTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentries Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8fffields Tff7b72= Te6edf3fields
Tff7b72selfTff7b72.Td2a8fferror_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffvalidation_types Tff7b72= Te6edf3validation_types Tff7b72or Tb4b4b4[Tb4b4b4]

Te6edf3header_columns Tff7b72= Tb4b4b4[Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff3Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6fflist_focusTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffNameTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4]
Tff7b72for Te6edf3field_keyTb4b4b4, Te6edf3field_config Tff7b72in Tff7b72selfTff7b72.Td2a8fffieldsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3header_columnsTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff2Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6fflist_focusTa5d6ff"Tb4b4b4, Te6edf3field_configTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4, Te6edf3field_keyTb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4)
Te6edf3header_columnsTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4(T79c0ff4Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6fflist_focusTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffheader_row Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Te6edf3header_columnsTb4b4b4)

Te6edf3first_entry Tff7b72= Tff7b72selfTff7b72.Td2a8ffcreate_entry_rowTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3first_entryTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffadd_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ff+ Add Ta5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8ffadd_entryTb4b4b4)
Te6edf3add_button_padded Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Tff7b72selfTff7b72.Td2a8ffadd_buttonTb4b4b4, Te6edf3leftTff7b72=T79c0ff2Tb4b4b4, Te6edf3rightTff7b72=T79c0ff2Tb4b4b4)

Te6edf3pile_widgets Tff7b72= Tb4b4b4[
Tff7b72selfTff7b72.Td2a8ffheader_rowTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff-Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3first_entryTb4b4b4,
Te6edf3add_button_padded
Tb4b4b4]

Te6edf3urwidTff7b72.Td2a8ffPileTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3pile_widgetsTb4b4b4)
Te6edf3FormFieldTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3config_keyTb4b4b4, Te6edf3transformTb4b4b4)

Tff7b72def Td2a8ffcreate_entry_rowTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3valuesTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3values Tff7b72is Tff7b72NoneTb4b4b4:
Te6edf3values Tff7b72= Tb4b4b4{Tb4b4b4}

Te6edf3name_edit Tff7b72= Te6edf3ReadlineEditTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3nameTb4b4b4)

Te6edf3columns Tff7b72= Tb4b4b4[Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff3Tb4b4b4, Te6edf3name_editTb4b4b4)Tb4b4b4]

Te6edf3field_widgets Tff7b72= Tb4b4b4{Tb4b4b4}
Tff7b72for Te6edf3field_keyTb4b4b4, Te6edf3field_config Tff7b72in Tff7b72selfTff7b72.Td2a8fffieldsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3field_value Tff7b72= Te6edf3valuesTff7b72.Td2a8ffgetTb4b4b4(Te6edf3field_keyTb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)

Tff7b72if Te6edf3field_configTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffcheckboxTa5d6ff"Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffCheckBoxTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3stateTff7b72=Tffa657boolTb4b4b4(Te6edf3field_valueTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3field_configTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffdropdownTa5d6ff"Tb4b4b4:
T8b949e# TODO: dropdown in MultiTable
Te6edf3widget Tff7b72= Te6edf3ReadlineEditTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4, Tffa657strTb4b4b4(Te6edf3field_valueTb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3widget Tff7b72= Te6edf3ReadlineEditTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4, Tffa657strTb4b4b4(Te6edf3field_valueTb4b4b4)Tb4b4b4)

Te6edf3field_widgetsTb4b4b4[Te6edf3field_keyTb4b4b4] Tff7b72= Te6edf3widget
Te6edf3columnsTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff2Tb4b4b4, Te6edf3widgetTb4b4b4)Tb4b4b4)

Te6edf3remove_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ff×Ta5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72lambda Te6edf3buttonTb4b4b4: Tff7b72selfTff7b72.Td2a8ffremove_entryTb4b4b4(Te6edf3buttonTb4b4b4, Te6edf3entry_rowTb4b4b4)Tb4b4b4)
Te6edf3columnsTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4(T79c0ff4Tb4b4b4, Te6edf3remove_buttonTb4b4b4)Tb4b4b4)

Te6edf3entry_row Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Te6edf3columnsTb4b4b4)
Te6edf3entry_rowTff7b72.Td2a8ffname_edit Tff7b72= Te6edf3name_edit
Te6edf3entry_rowTff7b72.Td2a8fffield_widgets Tff7b72= Te6edf3field_widgets

Tff7b72return Te6edf3entry_row

Tff7b72def Td2a8ffremove_entryTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4, Te6edf3entry_rowTb4b4b4)Tb4b4b4:
Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffentriesTb4b4b4) Tff7b72> T79c0ff1Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffremoveTb4b4b4(Te6edf3entry_rowTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcontents Tff7b72= Tb4b4b4[Tb4b4b4(Te6edf3wTb4b4b4, Tff7b72selfTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72for Te6edf3w Tff7b72in Tff7b72selfTff7b72.Td2a8ffget_pile_widgetsTb4b4b4(Tb4b4b4)Tb4b4b4]

Tff7b72def Td2a8ffadd_entryTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Te6edf3new_entry Tff7b72= Tff7b72selfTff7b72.Td2a8ffcreate_entry_rowTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3new_entryTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffcontents Tff7b72= Tb4b4b4[Tb4b4b4(Te6edf3wTb4b4b4, Tff7b72selfTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72for Te6edf3w Tff7b72in Tff7b72selfTff7b72.Td2a8ffget_pile_widgetsTb4b4b4(Tb4b4b4)Tb4b4b4]

Tff7b72def Td2a8ffget_pile_widgetsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tb4b4b4[
Tff7b72selfTff7b72.Td2a8ffheader_rowTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff-Ta5d6ff"Tb4b4b4)
Tb4b4b4] Tff7b72+ Tff7b72selfTff7b72.Td2a8ffentries Tff7b72+ Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Tff7b72selfTff7b72.Td2a8ffadd_buttonTb4b4b4, Te6edf3leftTff7b72=T79c0ff2Tb4b4b4, Te6edf3rightTff7b72=T79c0ff2Tb4b4b4)
Tb4b4b4]

Tff7b72def Td2a8ffget_valueTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3values Tff7b72= Tb4b4b4{Tb4b4b4}
Tff7b72for Te6edf3entry Tff7b72in Tff7b72selfTff7b72.Td2a8ffentriesTb4b4b4:
Te6edf3name Tff7b72= Te6edf3entryTff7b72.Td2a8ffname_editTff7b72.Td2a8ffedit_textTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3nameTb4b4b4:
Te6edf3subinterface Tff7b72= Tb4b4b4{Tb4b4b4}
Te6edf3subinterfaceTb4b4b4[Ta5d6ff"Ta5d6ffinterface_enabledTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72True

Tff7b72for Te6edf3field_keyTb4b4b4, Te6edf3widget Tff7b72in Te6edf3entryTff7b72.Td2a8fffield_widgetsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3field_config Tff7b72= Tff7b72selfTff7b72.Td2a8fffieldsTff7b72.Td2a8ffgetTb4b4b4(Te6edf3field_keyTb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4)

Tff7b72if Tffa657hasattrTb4b4b4(Te6edf3widgetTb4b4b4, Ta5d6ff"Ta5d6ffget_stateTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3value Tff7b72= Te6edf3widgetTff7b72.Td2a8ffget_stateTb4b4b4(Tb4b4b4)
Tff7b72elif Tffa657hasattrTb4b4b4(Te6edf3widgetTb4b4b4, Ta5d6ff"Ta5d6ffedit_textTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3value Tff7b72= Te6edf3widgetTff7b72.Td2a8ffedit_textTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)

Te6edf3transform Tff7b72= Te6edf3field_configTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3transform Tff7b72and Te6edf3valueTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3value Tff7b72= Te6edf3transformTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72except Tb4b4b4(Tf85149ValueErrorTb4b4b4, Tf85149TypeErrorTb4b4b4)Tb4b4b4:
Te6edf3value Tff7b72= Ta5d6ff"Ta5d6ff"

Tff7b72if Te6edf3valueTb4b4b4:
Te6edf3subinterfaceTb4b4b4[Te6edf3field_keyTb4b4b4] Tff7b72= Te6edf3value

Te6edf3valuesTb4b4b4[Te6edf3nameTb4b4b4] Tff7b72= Te6edf3subinterface

Tff7b72return Tff7b72selfTff7b72.Td2a8fftransformTb4b4b4(Te6edf3valuesTb4b4b4) Tff7b72if Tff7b72selfTff7b72.Td2a8fftransform Tff7b72else Te6edf3values

Tff7b72def Td2a8ffset_valueTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentries Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72if Tff7b72not Te6edf3valueTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcreate_entry_rowTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72for Te6edf3nameTb4b4b4, Te6edf3config Tff7b72in Te6edf3valueTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcreate_entry_rowTb4b4b4(Te6edf3nameTff7b72=Te6edf3nameTb4b4b4, Te6edf3valuesTff7b72=Te6edf3configTb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffcontents Tff7b72= Tb4b4b4[Tb4b4b4(Te6edf3wTb4b4b4, Tff7b72selfTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72for Te6edf3w Tff7b72in Tff7b72selfTff7b72.Td2a8ffget_pile_widgetsTb4b4b4(Tb4b4b4)Tb4b4b4]

Tff7b72def Td2a8ffvalidateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3values Tff7b72= Tff7b72selfTff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Tff7b72None

Tff7b72for Te6edf3validation Tff7b72in Tff7b72selfTff7b72.Td2a8ffvalidation_typesTb4b4b4:
Tff7b72if Te6edf3validation Tff7b72== Ta5d6ff"Ta5d6ffrequiredTa5d6ff" Tff7b72and Tff7b72not Te6edf3valuesTb4b4b4:
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Ta5d6ff"Ta5d6ffAt least one subinterface is requiredTa5d6ff"
Tff7b72break

Tff7b72selfTff7b72.Td2a8fferror_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8fferror Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72return Tff7b72selfTff7b72.Td2a8fferror Tff7b72is Tff7b72None


Tff7b72class T56d364FormKeyValuePairsTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4, Te6edf3FormFieldTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3config_keyTb4b4b4, Te6edf3validation_typesTff7b72=Tff7b72NoneTb4b4b4, Te6edf3transformTff7b72=Tff7b72NoneTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentries Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8fferror_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffvalidation_types Tff7b72= Te6edf3validation_types Tff7b72or Tb4b4b4[Tb4b4b4]

Te6edf3header_columns Tff7b72= Tb4b4b4[
Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffParameter KeyTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffmultitable_headerTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffParameter ValueTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffmultitable_headerTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(T79c0ff4Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffActionTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffmultitable_headerTa5d6ff"Tb4b4b4)Tb4b4b4)
Tb4b4b4]

Tff7b72selfTff7b72.Td2a8ffheader_row Tff7b72= Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Te6edf3header_columnsTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffmultitable_headerTa5d6ff"Tb4b4b4)

Te6edf3first_entry Tff7b72= Tff7b72selfTff7b72.Td2a8ffcreate_entry_rowTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3first_entryTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffadd_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ff+ Add ParameterTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8ffadd_entryTb4b4b4)
Te6edf3add_button_padded Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Tff7b72selfTff7b72.Td2a8ffadd_buttonTb4b4b4, Te6edf3leftTff7b72=T79c0ff2Tb4b4b4, Te6edf3rightTff7b72=T79c0ff2Tb4b4b4)

Te6edf3pile_widgets Tff7b72= Tb4b4b4[
Tff7b72selfTff7b72.Td2a8ffheader_rowTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff-Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3first_entryTb4b4b4,
Te6edf3add_button_padded
Tb4b4b4]

Te6edf3urwidTff7b72.Td2a8ffPileTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3pile_widgetsTb4b4b4)
Te6edf3FormFieldTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3config_keyTb4b4b4, Te6edf3transformTb4b4b4)

Tff7b72def Td2a8ffcreate_entry_rowTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3valueTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3key_edit Tff7b72= Te6edf3ReadlineEditTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3keyTb4b4b4)
Te6edf3value_edit Tff7b72= Te6edf3ReadlineEditTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3valueTb4b4b4)

Te6edf3remove_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ff×Ta5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72lambda Te6edf3buttonTb4b4b4: Tff7b72selfTff7b72.Td2a8ffremove_entryTb4b4b4(Te6edf3buttonTb4b4b4, Te6edf3entry_rowTb4b4b4)Tb4b4b4)

Te6edf3entry_row Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff1Tb4b4b4, Te6edf3key_editTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff1Tb4b4b4, Te6edf3value_editTb4b4b4)Tb4b4b4,
Tb4b4b4(T79c0ff4Tb4b4b4, Te6edf3remove_buttonTb4b4b4)
Tb4b4b4]Tb4b4b4)

Te6edf3entry_rowTff7b72.Td2a8ffkey_edit Tff7b72= Te6edf3key_edit
Te6edf3entry_rowTff7b72.Td2a8ffvalue_edit Tff7b72= Te6edf3value_edit

Tff7b72return Te6edf3entry_row

Tff7b72def Td2a8ffremove_entryTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4, Te6edf3entry_rowTb4b4b4)Tb4b4b4:
Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffentriesTb4b4b4) Tff7b72> T79c0ff1Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffremoveTb4b4b4(Te6edf3entry_rowTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcontents Tff7b72= Tb4b4b4[Tb4b4b4(Te6edf3wTb4b4b4, Tff7b72selfTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72for Te6edf3w Tff7b72in Tff7b72selfTff7b72.Td2a8ffget_pile_widgetsTb4b4b4(Tb4b4b4)Tb4b4b4]

Tff7b72def Td2a8ffadd_entryTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Te6edf3new_entry Tff7b72= Tff7b72selfTff7b72.Td2a8ffcreate_entry_rowTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3new_entryTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffcontents Tff7b72= Tb4b4b4[Tb4b4b4(Te6edf3wTb4b4b4, Tff7b72selfTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72for Te6edf3w Tff7b72in Tff7b72selfTff7b72.Td2a8ffget_pile_widgetsTb4b4b4(Tb4b4b4)Tb4b4b4]

Tff7b72def Td2a8ffget_pile_widgetsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tb4b4b4[
Tff7b72selfTff7b72.Td2a8ffheader_rowTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff-Ta5d6ff"Tb4b4b4)
Tb4b4b4] Tff7b72+ Tff7b72selfTff7b72.Td2a8ffentries Tff7b72+ Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Tff7b72selfTff7b72.Td2a8ffadd_buttonTb4b4b4, Te6edf3leftTff7b72=T79c0ff2Tb4b4b4, Te6edf3rightTff7b72=T79c0ff2Tb4b4b4)
Tb4b4b4]

Tff7b72def Td2a8ffget_valueTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3values Tff7b72= Tb4b4b4{Tb4b4b4}
Tff7b72for Te6edf3entry Tff7b72in Tff7b72selfTff7b72.Td2a8ffentriesTb4b4b4:
Te6edf3key Tff7b72= Te6edf3entryTff7b72.Td2a8ffkey_editTff7b72.Td2a8ffedit_textTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Te6edf3value Tff7b72= Te6edf3entryTff7b72.Td2a8ffvalue_editTff7b72.Td2a8ffedit_textTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)

Tff7b72if Te6edf3keyTb4b4b4:
Tff7b72if Te6edf3valueTff7b72.Td2a8ffisdigitTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3valuesTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72= Tffa657intTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72elif Te6edf3valueTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff'Ta5d6ff.Ta5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff'Tb4b4b4, T79c0ff1Tb4b4b4)Tff7b72.Td2a8ffisdigitTb4b4b4(Tb4b4b4) Tff7b72and Te6edf3valueTff7b72.Td2a8ffcountTb4b4b4(Ta5d6ff'Ta5d6ff.Ta5d6ff'Tb4b4b4) Tff7b72<Tff7b72= T79c0ff1Tb4b4b4:
Te6edf3valuesTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72= Tffa657floatTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72elif Te6edf3valueTff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4) Tff7b72== Ta5d6ff'Ta5d6fftrueTa5d6ff'Tb4b4b4:
Te6edf3valuesTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72= Tff7b72True
Tff7b72elif Te6edf3valueTff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4) Tff7b72== Ta5d6ff'Ta5d6fffalseTa5d6ff'Tb4b4b4:
Te6edf3valuesTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72= Tff7b72False
Tff7b72elseTb4b4b4:
Te6edf3valuesTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72= Te6edf3value

Tff7b72return Tff7b72selfTff7b72.Td2a8fftransformTb4b4b4(Te6edf3valuesTb4b4b4) Tff7b72if Tff7b72selfTff7b72.Td2a8fftransform Tff7b72else Te6edf3values

Tff7b72def Td2a8ffset_valueTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentries Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72if Tff7b72not Te6edf3value Tff7b72or Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcreate_entry_rowTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72for Te6edf3keyTb4b4b4, Te6edf3val Tff7b72in Te6edf3valueTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcreate_entry_rowTb4b4b4(Te6edf3keyTff7b72=Te6edf3keyTb4b4b4, Te6edf3valueTff7b72=Tffa657strTb4b4b4(Te6edf3valTb4b4b4)Tb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffcontents Tff7b72= Tb4b4b4[Tb4b4b4(Te6edf3wTb4b4b4, Tff7b72selfTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72for Te6edf3w Tff7b72in Tff7b72selfTff7b72.Td2a8ffget_pile_widgetsTb4b4b4(Tb4b4b4)Tb4b4b4]

Tff7b72def Td2a8ffvalidateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3values Tff7b72= Tff7b72selfTff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Tff7b72None

Te6edf3keys Tff7b72= Tb4b4b4[Te6edf3entryTff7b72.Td2a8ffkey_editTff7b72.Td2a8ffedit_textTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72for Te6edf3entry Tff7b72in Tff7b72selfTff7b72.Td2a8ffentries
Tff7b72if Te6edf3entryTff7b72.Td2a8ffkey_editTff7b72.Td2a8ffedit_textTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4]
Tff7b72if Tffa657lenTb4b4b4(Te6edf3keysTb4b4b4) Tff7b72!= Tffa657lenTb4b4b4(Tffa657setTb4b4b4(Te6edf3keysTb4b4b4)Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Ta5d6ff"Ta5d6ffDuplicate keys are not allowedTa5d6ff"
Tff7b72selfTff7b72.Td2a8fferror_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8fferrorTb4b4b4)Tb4b4b4)
Tff7b72return Tff7b72False

Tff7b72for Te6edf3validation Tff7b72in Tff7b72selfTff7b72.Td2a8ffvalidation_typesTb4b4b4:
Tff7b72if Te6edf3validation Tff7b72== Ta5d6ff"Ta5d6ffrequiredTa5d6ff" Tff7b72and Tff7b72not Te6edf3valuesTb4b4b4:
Tff7b72selfTff7b72.Td2a8fferror Tff7b72= Ta5d6ff"Ta5d6ffAtleast one parameter is requiredTa5d6ff"
Tff7b72break

Tff7b72selfTff7b72.Td2a8fferror_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8fferror Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72return Tff7b72selfTff7b72.Td2a8fferror Tff7b72is Tff7b72None


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────